The present invention relates to decoupled parallel meshing in computer-aided design (CAD), and in particular to methods, apparatus and programs for use at different stages of a decoupled parallel meshing process.
Computed Aided Engineering (CAE), the use of computer software for the purpose of modelling and simulating the behaviour of products in order to improve their quality, has become nearly ubiquitous in the manufacturing industry. Areas covered by CAE include, but are not limited to, stress and thermal analysis, fluid dynamics and kinematics.
As shown in FIG. 1 of the accompanying drawings, a typical CAE process starts with a Computer Aided Design (CAD) file which represents the geometrical model of the object that is analyzed (step 1). The CAD file, created using specialized CAD software, passes first through a stage at which boundary conditions are set (step 2) and then through a pre-processing step (step 3) where the geometry is partitioned (meshed) by a mesher into a very large number of elements, which form what is called a mesh. The mesh, accompanied by the boundary conditions, is then sent to a solver which uses standard numerical techniques, like the Finite Element Method, to compute the effect (e.g. deformation) of the boundary conditions on the object (step 4). Finally, the results are visualized in a post-processing step (step 5). Although the solver step used to be the most time consuming step of the analysis, with the improvement in processing power that has happened in the last few decades, the balance has shifted in the direction of the pre-processing operations, like CAD model preparation, the setting of boundary conditions and meshing. One of the main reasons for this shift is that, for complex CAD models, like the ones found in industry, a certain amount of user intervention is still required. As the processor performance is expected to follow this trend at least in the near future, pre-processing is set to become a bigger and bigger bottleneck in the analysis. Additionally, much less effort has hitherto been spent in automating and parallelizing these tasks than it was in the case of solvers. However, accelerating the pre-processing stage of the CAE process would be an important step towards achieving a faster and more efficient product development cycle and the development of better quality products.
Currently available meshers can be divided into two categories, serial and parallel. Serial meshers are restricted to the computational power of only one processor and to the memory attached to it. With a mesh of the order of 1 million elements requiring in the order of 1 GB of memory to create, it is clear that memory is a severe limitation for such codes. Moreover, with all modern processors having multiple cores, serial meshers are able to use less and less of the peak performance of the processor. However, most meshing software available today and, in particular, all those that are freely available (e.g. Netgen™, TetGen™, Gmsh™), fall into the serial mesher category.
Parallel meshers are able to create much larger meshes, and in a much shorter time, by distributing the workload to a number of processors found either in one computer or, more often, in a number of computers connected by a network. By the amount of communication performed between the processors while meshing, parallel mesh generators can be further divided into three categories: tightly coupled, loosely coupled and decoupled. From these three subcategories, only decoupled meshers (which require no communication or synchronization between different processing parts) can achieve 100% reuse of the serial meshing code. This is achieved by partitioning the domain that is to be meshed into a number of disjoint sub-domains, which are then independently meshed.
Two types of parallel-decoupled meshers have been proposed in the prior art. The first and most popular type, such as that disclosed in US2010134498A1, starts with a coarse two-dimensional (2D) surface mesh, created in serial. This initial mesh is partitioned into a number of sub-domains, with a three-dimensional (3D) volume mesh for each sub-domain being computed independently and in parallel on different nodes. The main drawback of this approach is that, for complex geometries, coarse meshes are in general more difficult to create than fine ones, since the small features of the geometry are more easily approximated by small elements rather than large ones. Hence, for complex geometries, the initial 2D mesh will need to be fine rather than coarse, which will become a major bottleneck of the algorithm. The second type, mentioned in US2007011646A1, works by starting with the partitioning of a single solid directly at the geometry level. However, this document describes the operation at an abstract level and does not give any way in which it can be actually implemented.
Another important issue which has not been addressed in any prior art so far is the fact that many CAD models which need to be meshed are not one single solid, but actually an assembly of multiple solids, ranging from a few tens (e.g., for a mobile phone) to hundreds (e.g. for a laptop computer) and to thousands (e.g. for a complete server). High-end commercial CAE packages like ABAQUS/CAE™ extract the parts from the assembly structure then mesh them, in sequence, as independent solids. As such, many opportunities for parallelism are lost. For example, the partitioning of the CAD model for one of the parts, a serial operation if considering that part in isolation, could be computed in parallel with the partitioning or meshing of other parts, which would reduce the overall time needed to mesh the assembly model.
Finally, most standard off-the-shelf meshers and in special free open-source ones, while able to generate high quality meshes, lack many automation features, in the sense that it is the user that must set certain key parameters, like the maximum element size. Meshing complex models is thus a time consuming trial-and-error process, with the user trying various values for the parameters (e.g. reducing the maximum element size) until the mesh is successfully obtained.
Accordingly it is desirable to provide a system that, in combination with an unmodified off-the-shelf serial meshing program and an unmodified off-the-shelf CAD kernel, can serve as a fast and scalable tool capable of meshing complex CAD models, like the ones used in industry, with relatively little or no user intervention.